using System.Collections.Generic;
using Lockstep.Math;
using Lockstep.Game;

namespace Lockstep.Game {
    public interface IGameStateService : IService {
        //changed in the game
        LFloat RemainTime { get; set; }
        LFloat DeltaTime { get; set; }
        int CurEnemyCount { get; set; }
        int CurEnemyId { get; set; }

        List<BaseEntity> GetEntities(EntityType t);
        object GetEntity(int id);
        T CreateEntity<T>(int prefabId, LVector3 position) where T: Entity, new ();
        T CreateMapItem<T>(WallCellConfig info, LVector3 position) where T : MapItemEntity, new ();
        T CreateBullet<T>(BulletConfig config, Entity caster, LVector3 position) where T : BulletEntity, new();
    }
}